package sivan.test;

import org.junit.Test;

/**
 * jdk11的新特性
 */
public class Jdk11Demo {

    /**
     * 在Lambda表达式中，可以使用var关键字来标识变量
     * 变量类型由编译器自行推断
     */
    @Test
    public void userVar() {
//        Arrays.asList("Java", "Python", "Ruby")
//                .forEach((var s) ->
//                        System.out.println("Hello, " + s));
//        List<Integer> scores = Arrays.asList(100,20,30);
//        scores.forEach((var s) ->
//            System.out.println(s+100)
//        );
//        var name = "xiaowen";
//        System.out.println(name);
//        var age = 23;
//        System.out.println(age);
    }

    /**
     * JDK11的新的HttpClient支持HTTP/2和WebSocket，并且可以使用异步接口：
     */
    @Test
    public void testHttpClient() {
//        HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://www.sqq.com/")).GET().build();
//        HttpResponse.BodyHandler<String> bodyHandler = HttpResponse.BodyHandlers.ofString();
//        HttpClient client = HttpClient.newHttpClient();
//        CompletableFuture<HttpResponse<String>> future = client.sendAsync(request, bodyHandler);
//        future.thenApply(HttpResponse::body).thenAccept(System.out::println).join();
    }

    /**
     * 对于List接口，新增了一个of(T...)接口，用于快速创建List对象
     * List的toArray()还新增了一个重载方法，可以更方便地把List转换为数组
     */
    @Test
    public void listApi() {
//        List<String> list = List.of("xiaowen", "huiting", "xiaolan");
//        list.forEach(System.out::println);
//        String[] array = list.toArray(String[]::new);
//        for (String arr : array) {
//            System.out.println(arr);
//        }
    }

    @Test
    public void stringApi() {
//        String str = " \u3000"; // 由一个空格和一个中文空格构成
//        System.out.println(str.isEmpty());
//        System.out.println(str.isBlank());
//
//        String s = "Java\nPython\nRuby"; //新增lines()方法，可以非常方便地按行分割字符串：
//        s.lines().forEach(System.out::println);
//
//        System.out.println("啦".repeat(10)); // 新增repeat()方法，可以指定重复次数：
    }
}
